package com.wjm.servlet;

import com.wjm.http.HttpRequest;
import com.wjm.http.HttpResponse;
import com.wjm.vo.User;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templateresolver.FileTemplateResolver;


import java.io.IOException;
import java.io.PrintWriter;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;

/**
 * Data:2022年08月16日
 * Author:wjm
 * Content:
 */
public class ShowAllDataServlet {
    //创建一个集合用于存储读User类的对象
    List<User> users = new ArrayList<>();

    public void service(HttpRequest request, HttpResponse response){
        //读取user.txt中的内容
        try {
            try(RandomAccessFile randomAccessFile = new RandomAccessFile("user.txt","r")){

                //创建一个字节长度为32字节的字节数组
                byte[] bytes = new byte[32];
                //因为一个用户的所有数组都是100字节，所以文件的长度/100就是用户的个数
                for(int i=0;i< randomAccessFile.length()/100;i++){
                    //读取username
                    randomAccessFile.read(bytes);
                    //将字节数组转化为字符串
                    String username = new String(bytes,"utf-8").trim();

                    //读取password
                    randomAccessFile.read(bytes);
                    //将字节数组转化为字符串
                    String password = new String(bytes,"utf-8").trim();

                    //读取sex
                    randomAccessFile.read(bytes);
                    //将字节数组转化为字符串
                    String sex = new String(bytes,"utf-8").trim();

                    //读取age
                    int age = randomAccessFile.readInt();

                    //创建User类对象，将每个用户的信息存入到对象的属性中
                    User user = new User();
                    user.setUsername(username);
                    user.setPassword(password);
                    user.setSex(sex);
                    user.setAge(age);
                    //将对象存储到users集合中
                    users.add(user);

                }

            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("user集合"+users);


        /*
             使用thymeleaf模板，生成动态页面，实现前后端分离
        */
        //1.创建thymeleaf模板引擎对象
        TemplateEngine templateEngine = new TemplateEngine();
        //2.创建模板解析器对象
        FileTemplateResolver resolve = new FileTemplateResolver();
        //3.给解析器设置解析模型
        resolve.setTemplateMode("html");
        //4.给解析器设置字符集
        resolve.setCharacterEncoding("UTF-8");
        //5.将模板解析器添加到模板引擎中
        templateEngine.setTemplateResolver(resolve);


        //6.创建Context对象，数据存储对象
        Context context = new Context();
        //7.容器加入要引擎解析的对象数据
        context.setVariable("users",users);
        //8.利用模板引擎将数据和静态页面结合，生成动态页面
        String html = templateEngine.process("./webapps/myweb/userlist.html",context);
        System.out.println("结合后的页面"+html);

        //获取输出流
        PrintWriter printWriter = response.getPrintWriter();
        printWriter.println(html);


    }




}
